package com.isd.facturacion.web;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import com.isd.facturacion.modelo.MovimientoFacturacion;
import com.isd.facturacion.modelo.MovimientoTienda;
import com.isd.facturacion.rn.MovimientoFacturacionRN;
import com.isd.facturacion.vista.ComprobantesPendientes;
import com.isd.facturacion.vista.ProductoPendiente;
import com.isd.global.util.JsfUtil;
import com.isd.seguridad.web.UsuarioSessionBean;
import com.isd.venta.modelo.MovimientoVenta;
import com.isd.ventas.rn.MovimientoVentaRN;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author ctrosch
 */
@ManagedBean(name="consultaPedidosBean")
@ViewScoped
public class ConsultaPedidosBean implements Serializable {

    @EJB private MovimientoFacturacionRN movimientoFacturacionRN;
    @EJB private MovimientoVentaRN movimientoVentaRN;

    private List<ComprobantesPendientes> carritosConfirmados;
    private List<ComprobantesPendientes> pedidosPendientes;
    private List<ProductoPendiente> productosPendientes;
    private List<MovimientoFacturacion> pedidosFacturados;

    private MovimientoTienda carrito;
    private MovimientoFacturacion pedido;
    private MovimientoVenta factura;

    @ManagedProperty(value = "#{usuarioSessionBean}")
    private UsuarioSessionBean usuarioSession;

    /** Creates a new instance of ConsultaNotasPedidoBean */
    public ConsultaPedidosBean() {
        
    }

    @PostConstruct
    private void init(){   
        
        /**
         * Verificamos si está registrado y si tiene seleccionado un cliente, en caso contrario
         * al estar registrado es un usuario cliente
         */
        if(usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getCliente()!=null){

            pedidosPendientes = movimientoFacturacionRN.getPedidosPendientes(usuarioSession.getUsuario().getCliente());
            pedidosFacturados = movimientoFacturacionRN.getPedidosFacturados(usuarioSession.getUsuario().getCliente());
            productosPendientes = movimientoFacturacionRN.getProductosPendientes(usuarioSession.getUsuario().getCliente());

            if(usuarioSession.getUsuario().getTipo().equals('V')){

                carritosConfirmados = movimientoFacturacionRN.getCarritosEnProcesoVendedor(usuarioSession.getUsuario().getCliente());

            }else{
                carritosConfirmados = movimientoFacturacionRN.getCarritosEnProcesoCliente(usuarioSession.getUsuario().getCliente());
            }  
        }else{
            JsfUtil.addWarningMessage("Seleccione un cliente para ver el estado de sus pedidos");
        }        
    }

    public String verPedidosPendientes(){

        /**
         * Verificamos si está registrado y si tiene seleccionado un cliente, en caso contrario
         * al estar registrado es un usuario cliente
         */
        if(usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getCliente()!=null){

            return "/facturacion/consultaPedidos.xhtml";

        }else{

            if(usuarioSession.getUsuario().getTipo().equals('V')){
                JsfUtil.addWarningMessage("Seleccione un cliente para ver el estado de sus pedidos");
            }
            return "";
        }
    }
    
    public void seleccionarCarrito(String modfor, String codfor, Integer nrofor){

        carrito = movimientoFacturacionRN.getMovimientoTienda(modfor,codfor,nrofor, true);
        JsfUtil.addInfoMessage("","Los precios están expresados en pesos y con I.V.A. incluido");
        JsfUtil.addWarningMessage("","El importe total a facturar puede estar sujeto a percepciones u otros impuestos");
    }

    public void seleccionarPedido(String modfor, String codfor, Integer nrofor){

        pedido = movimientoFacturacionRN.getMovimientoFacturacion(modfor,codfor,nrofor, true);
        JsfUtil.addInfoMessage("","Los precios están expresados en pesos y con I.V.A. incluido");
        JsfUtil.addWarningMessage("","El importe total a facturar puede estar sujeto a percepciones u otros impuestos");
    }

    public void seleccionarFactura(String modfor, String codfor, Integer nrofor){

        factura = movimientoVentaRN.getMovimiento(modfor, codfor, nrofor);
        JsfUtil.addInfoMessage("","Los datos informados son de caracter orientativo");

    }
   
    //-------------------------------------------------------------------------
    public List<MovimientoFacturacion> getPedidosFacturados() {
        return pedidosFacturados;
    }

    public void setPedidosFacturados(List<MovimientoFacturacion> pedidosFacturados) {
        this.pedidosFacturados = pedidosFacturados;
    }


    public List<ComprobantesPendientes> getPedidosPendientes() {
        return pedidosPendientes;
    }

    public void setPedidosPendientes(List<ComprobantesPendientes> pedidosPendientes) {
        this.pedidosPendientes = pedidosPendientes;
    }

    public MovimientoFacturacion getPedido() {
        return pedido;
    }

    public void setPedido(MovimientoFacturacion pedido) {
        this.pedido = pedido;
    }
    
    public UsuarioSessionBean getUsuarioSession() {
        return usuarioSession;
    }

    public void setUsuarioSession(UsuarioSessionBean usuarioSession) {
        this.usuarioSession = usuarioSession;
    }

    public List<ProductoPendiente> getProductosPendientes() {
        return productosPendientes;
    }

    public void setProductosPendientes(List<ProductoPendiente> productosPendientes) {
        this.productosPendientes = productosPendientes;
    }

    public MovimientoVenta getFactura() {
        return factura;
    }

    public void setFactura(MovimientoVenta factura) {
        this.factura = factura;
    }

    public List<ComprobantesPendientes> getCarritosConfirmados() {
        return carritosConfirmados;
    }

    public void setCarritosConfirmados(List<ComprobantesPendientes> carritosConfirmados) {
        this.carritosConfirmados = carritosConfirmados;
    }

    public MovimientoTienda getCarrito() {
        return carrito;
    }

    public void setCarrito(MovimientoTienda carrito) {
        this.carrito = carrito;
    }
}